/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vn.hva.bluepumpkin.server.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import vn.hva.bluepumpkin.common.util.ServiceLocator;
import vn.hva.bluepumpkin.ejb.session.faq.FAQFacadeRemote;
import vn.hva.bluepumpkin.ejb.session.faq.FAQFacadeRemoteHome;
import vn.hva.bluepumpkin.exception.ServerValidationException;

/**
 *
 * @author Administrator
 */
public class ManageFAQ extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/xml;charset=UTF-8");
        PrintWriter out = response.getWriter();

        try {
            // get FAQ's information.
            String faqID = request.getParameter("faqid");
            int faqid = 0;
            if(faqID != null){
                faqid = Integer.parseInt(faqID);
            }
            
            String question = request.getParameter("question");
            String answer = request.getParameter("answer");            
            String action = request.getParameter("action");            
            String status = request.getParameter("current");
            // get current date.
            Date now = new Date();          
           
            // Get FAQFascade remote home interface
            FAQFacadeRemoteHome faqFacade = (FAQFacadeRemoteHome) ServiceLocator.getEjbRemoteHome("java:FAQFacade",
                    FAQFacadeRemoteHome.class);
            // Get FAQFascade remote interface
            FAQFacadeRemote remote = faqFacade.create();

            if (action.equals("add")) {
                int id = 0;
                // add new FAQ , return id of new FAQ
                id = remote.addNewFAQ(question, answer, now, true);                
                this.returnResult(out, true, String.valueOf(id));
            } else if (action.equals("update")) {
                // update FAQ
                if (remote.updateFAQ(faqid, question, answer, now)) {
                    this.returnResult(out, true, "");
                } else {
                    this.returnResult(out, false, "");
                }
            } else if (action.equals("delete")) {
                // delete FAQ.
                if (remote.deleteFAQ(faqid)) {
                    this.returnResult(out, true, "");
                } else {
                    this.returnResult(out, false, "");
                }
            // update Status FAQ
            }else if(action.equals("updateStatus")){                
                if(status.equals("true")){
                    remote.updateStatus(faqid, false);
                    returnResult(out, true, "false");
                }else{
                    remote.updateStatus(faqid, true);
                    returnResult(out, true, "true");
                }                
            }
        } catch (EJBException ex) {
            ex.printStackTrace();
        } catch (ServerValidationException ex) {
            ex.printStackTrace();
        } catch (CreateException ex) {
            ex.printStackTrace();
        } catch (NamingException ex) {
            ex.printStackTrace();
        }
    }

    public void returnResult(PrintWriter out, boolean rs, String note) {
        out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?> ");
        out.println("<root>");
        out.println("<result>" + rs + "</result>");
        out.println("<note><![CDATA[" + note + "]]></note>");
        out.println("</root>");
    }
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">

    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
